Modern day businesses cannot function efficiently without use of state of the art technology. Specifically, computers and software are an almost essential part of most of the businesses in developed economies. Typically, businesses use a number of off the shelf business applications, such as Excel® as well a number of custom applications specifically designed for a particular aspect of the business. There are a number of industry specific software applications that are developed by software companies to be used in a particular type of businesses, such as financial services, medical services, etc.
While such industry specific software applications are generally designed with specific characteristics of particular type of business in mind, they still need to be modified to be more suitable for use by the end user. Customer relationship management (CRM) software is one such example of a business application that is often modified by either the end user or by an independent software vendor (ISV) specializing in this particular type of software. Other examples of such applications that may need to be modified by a user or by an ISV include various business applications, such as an enterprise resource planning (ERP) system, a distributed accounting system, a material requirement planning (MRP) system, a project management system, etc.
Most business applications are generally highly customizable applications that can be customized by each customer with their unique needs. Typical customizations include addition of attributes to an existing entity, adding new entities, etc. Software development kits (SDKs) for various applications, including CRM application, generally present a programmatic way of accessing data in the application. For example, an SDK may have an application programming interface (API) that will allow a developer to programmatically update a zip-code attribute of an account. Generally, SDKs need to be easy to use to enable an independent software vendor or other users to develop rich applications on top of the original applications.
When applications are customized, the list of entities, their properties and their relationships may change from their original properties and relationships. In this case, it is a challenge to develop an easy-to-use SDK that can also handle these and other effects of customizations made on an application. For example, if new entities are added to the application, an SDK developed on the original application generally will not be aware of the newly added entities, their properties and their relationships. One approach may be to re-generate the SDK every time a customization is made. However, with a number of ISVs developing customized applications for different end users, such revision of the SDK can soon become a very cumbersome and expensive task. Moreover, changes made to the SDK have to be compiled and updated binary files have to be distributed to various client computers running the application using the SDK. Therefore, there is a need to provide a new approach to building SDKs for software applications that can accommodate the customizations made to the software applications.